package com.sc.passbook.service.impl;

import com.sc.passbook.constant.Constant;
import com.sc.passbook.service.IHbaseService;
import com.sc.passbook.utils.RowKeyGen;
import com.sc.passbook.vo.PassTemplate;
import com.spring4all.spring.boot.starter.hbase.api.HbaseTemplate;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;

/**
 * @author sc
 * Created on  2018/9/1
 */
@Service
@Slf4j
public class HbaseService implements IHbaseService {

    @Autowired
    private HbaseTemplate hbaseTemplate;

    @Override
    public boolean dropPassTemplateToHbase(PassTemplate passTemplate) {
        if(passTemplate==null){
            return false;
        }
        String rowKey = RowKeyGen.genPassTemplateRowKey(passTemplate);
        try {
             if(hbaseTemplate.getConnection().
                     getTable(TableName.valueOf(Constant.PassTemplateTable.TABLE_NAME)).
                     exists(new Get(Bytes.toBytes(rowKey)))){
                 log.warn("rowkey 存在");
                return false;
             }
        } catch (IOException e) {
            log.error(e.getLocalizedMessage());
            return false;
        }

        Put put = new Put(Bytes.toBytes(rowKey));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_B),Bytes.toBytes(Constant.PassTemplateTable.ID),Bytes.toBytes(passTemplate.getId()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_B),Bytes.toBytes(Constant.PassTemplateTable.TITLE),Bytes.toBytes(passTemplate.getTitle()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_B),Bytes.toBytes(Constant.PassTemplateTable.DESC),Bytes.toBytes(passTemplate.getDesc()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_B),Bytes.toBytes(Constant.PassTemplateTable.SUMMARY),Bytes.toBytes(passTemplate.getSummary()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_B),Bytes.toBytes(Constant.PassTemplateTable.BACKGROUND),Bytes.toBytes(passTemplate.getBackground()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_B),Bytes.toBytes(Constant.PassTemplateTable.HAS_TOKEN),Bytes.toBytes(passTemplate.getHasToken()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_C),Bytes.toBytes(Constant.PassTemplateTable.LIMIT),Bytes.toBytes(passTemplate.getLimit()));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_C),Bytes.toBytes(Constant.PassTemplateTable.START),Bytes.toBytes(DateFormatUtils.format(passTemplate.getStart(),"yyyy-MM-dd")));
        put.addColumn(Bytes.toBytes(Constant.PassTemplateTable.FAMILY_C),Bytes.toBytes(Constant.PassTemplateTable.END),Bytes.toBytes(DateFormatUtils.format(passTemplate.getStart(),"yyyy-MM-dd")));

        hbaseTemplate.saveOrUpdate(Constant.PassTemplateTable.TABLE_NAME,put);
        return true;
    }
}
